/** * Copyright (C) 2013 Romain Guefveneu. * * This file is part of naonedbus. * * Naonedbus is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Naonedbus is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package net.naonedbus.activity.impl; import java.util.List; import net.naonedbus.R; import net.naonedbus.activity.OneFragmentActivity; import net.naonedbus.bean.Ligne; import net.naonedbus.bean.Sens; import net.naonedbus.fragment.impl.ArretsFragment; import net.naonedbus.helper.StateHelper; import net.naonedbus.manager.impl.SensManager; import net.naonedbus.utils.ColorUtils; import net.naonedbus.widget.adapter.impl.SensSpinnerAdapter; import android.graphics.Color; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Spinner; import android.widget.TextView; import com.espian.showcaseview.ShowcaseView; public class ArretsActivity extends OneFragmentActivity { public static final String PARAM_LIGNE = "ligne"; public static interface OnChangeSens { void onChangeSens(Sens sens); } private StateHelper mStateHelper; private OnChangeSens mOnChangeSens; private Ligne mLigne; private Sens mCurrentSens; public ArretsActivity() { super(R.layout.activity_arrets); } @SuppressWarnings("deprecation") @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().setDisplayShowTitleEnabled(false); final SensManager sensManager = SensManager.getInstance(); mStateHelper = new StateHelper(getApplicationContext()); mLigne = getIntent().getParcelableExtra(PARAM_LIGNE); final List<Sens> sensList = sensManager.getAll(getContentResolver(), mLigne.getCode()); final int idSens = mStateHelper.getSens(mLigne.getCode(), sensList.get(0)._id); if (savedInstanceState == null) { final Bundle bundle = new Bundle(); bundle.putParcelable(ArretsFragment.PARAM_LIGNE, mLigne); addFragment(ArretsFragment.class, bundle); } final View header = findViewById(R.id.headerView); header.setBackgroundDrawable(ColorUtils.getGradiant(mLigne.getCouleur())); final TextView code = (TextView) findViewById(R.id.itemCode); code.setText(mLigne.getLettre()); code.setTextColor(mLigne.getCouleurTexte()); int circleColor; if (mLigne.getCouleurTexte() == Color.WHITE) { circleColor = ColorUtils.getDarkerColor(mLigne.getCouleur()); } else { circleColor = ColorUtils.getLighterColor(mLigne.getCouleur()); } code.setBackgroundDrawable(ColorUtils.getCircle(circleColor)); final Spinner sensTitle = (Spinner) findViewById(R.id.itemTitle); sensTitle.setAdapter(new SensSpinnerAdapter(this, sensList, mLigne.getCouleurTexte())); sensTitle.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(final AdapterView<?> arg0, final View arg1, final int location, final long arg3) { final Sens sens = sensList.get(location); mOnChangeSens.onChangeSens(sens); mCurrentSens = sens; } @Override public void onNothingSelected(final AdapterView<?> arg0) { } }); sensTitle.setSelection(getSensPosition(sensList, idSens)); final ShowcaseView sv = (ShowcaseView) findViewById(R.id.showcase); sv.setShowcaseView(sensTitle); sv.setShotType(ShowcaseView.TYPE_ONE_SHOT); sv.show(); sensTitle.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(final View v, final MotionEvent event) { sv.hide(); return false; } }); } @Override protected void onPostCreate(final Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mOnChangeSens = (OnChangeSens) getCurrentFragment(); } @Override protected void onStop() { if (mCurrentSens != null) mStateHelper.setSens(mLigne.getCode(), mCurrentSens._id); super.onStop(); } private int getSensPosition(final List<Sens> sensList, final int id) { Sens sens; for (int i = 0; i < sensList.size(); i++) { sens = sensList.get(i); if (sens._id == id) return i; } return 0; } }